package com.pro.meeting.service.impl;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.pro.meeting.bean.MeetingGrab;
import com.pro.meeting.bean.MeetingType;
import com.pro.meeting.bean.UtilsBean;
import com.pro.meeting.dao.MeetingGrabDao;
import com.pro.meeting.service.MeetingGrabService;
@Service
public class MeetingGrabServiceImpl  implements MeetingGrabService{
	@Autowired
	MeetingGrabDao meetingGrabDao;
	@Override
	public int add(MeetingGrab grab) {
		// TODO Auto-generated method stub
		grab.setGid(UUID.randomUUID().toString());
		grab.setGrabStatus("0");// 0审核中 1匹配成功 2匹配失败
		grab.setGrabTime(new Date());// 用户抢单时间   -->发出一单后。抢单时间
		grab.setCurrtDate(new Date());
		return meetingGrabDao.add(grab);
	}
	//根据某一发单ID，获得 抢单者列表
	@Override
	public List<MeetingGrab> getGrabListByPid(String pid) {
		// TODO Auto-generated method stub
		return meetingGrabDao.getGrabListByPid(pid);
	}
	
	
	/*
	 * 就选你 业务逻辑
	 */
	@Transactional  // Spring声明式注解事务： 运行时异常，事务进行回滚机制。
	public int updateChooseGrabStatus(String pid,String gid){
		//1、根据PID，先将所有的抢单列表数据状态改为 2（审核失败）
		int num=this.updateChooseGrabStatusByPid(pid);
		if(num<1){
			System.out.println(1/0);
		}
		//2根据GID，将选中的抢单数据更改状态为1（匹配成功）
		int num1=this.updateChooseGrabStatusByGid(gid);
		if(num1<1){
			//抛出动行时异常
			System.out.println(1/0);
		}
		return num1;
	}
	
	
	/*
	 * 就选你功能
	 * 1、根据PID，先将所有的抢单列表数据状态改为 2（审核失败）
	 * 2、根据GID，将选中的抢单数据更改状态为1（匹配成功）
	 */
	//1、根据PID，先将所有的抢单列表数据状态改为 2（审核失败）
	@Override
	public int updateChooseGrabStatusByPid(String pid) {
		// TODO Auto-generated method stub
		return meetingGrabDao.updateChooseGrabStatusByPid(pid);
	}
	//2、根据GID，将选中的抢单数据更改状态为1（匹配成功）
	@Override
	public int updateChooseGrabStatusByGid(String gid) {
		// TODO Auto-generated method stub
		return meetingGrabDao.updateChooseGrabStatusByGid(gid);
	}
	
	/*
	 * 数据统计--每日日报
	 */
	//统计昨日发单数量
	public int readYestPubCount(){
		return meetingGrabDao.readYestPubCount();
	}
	//今日可抢单数量 MeetingGrab: title / count
	public List<MeetingType> readPubGrabCount(){
		return meetingGrabDao.readPubGrabCount();
	}
	//昨天成功匹配数量
	public int readYestEquCount(){
		return meetingGrabDao.readYestEquCount();
	}
	//昨天成功执行（召开）数量
	public int readYestExecCount(){
		return meetingGrabDao.readYestEquCount();
	}

	/*
	 * 发单排行榜
	 */
	public List<UtilsBean> readRankBean(){
		return meetingGrabDao.readRankBean();
	}
}
